#Boa:Dialog:comisiones

import wx
import wx.grid
import consultasBD

def create(parent):
    return comisiones(parent)

[wxID_COMISIONES, wxID_COMISIONESGRID1, wxID_COMISIONESINMES, 
 wxID_COMISIONESMESES, wxID_COMISIONESSTATICTEXT1, 
] = [wx.NewId() for _init_ctrls in range(5)]

class comisiones(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_COMISIONES, name='comisiones',
              parent=prnt, pos=wx.Point(193, 167), size=wx.Size(637, 308),
              style=wx.DEFAULT_DIALOG_STYLE, title='Comisiones')
        self.SetClientSize(wx.Size(621, 272))

        self.grid1 = wx.grid.Grid(id=wxID_COMISIONESGRID1, name='grid1',
              parent=self, pos=wx.Point(16, 32), size=wx.Size(592, 208),
              style=0)

        self.staticText1 = wx.StaticText(id=wxID_COMISIONESSTATICTEXT1,
              label='Desde MES:', name='staticText1', parent=self,
              pos=wx.Point(24, 8), size=wx.Size(58, 13), style=0)

        self.inmes = wx.TextCtrl(id=wxID_COMISIONESINMES, name='inmes',
              parent=self, pos=wx.Point(88, 8), size=wx.Size(32, 21), style=0,
              value='')
        self.inmes.SetEditable(False)

        self.meses = wx.ComboBox(choices=['Enero', 'Febrero', 'Marzo', 'Abril',
              'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', 'Octubre',
              'Noviembre', 'Diciembre'], id=wxID_COMISIONESMESES, name='meses',
              parent=self, pos=wx.Point(136, 8), size=wx.Size(130, 21), style=0,
              value='Meses...')
        self.meses.Bind(wx.EVT_COMBOBOX, self.OnMesesCombobox,
              id=wxID_COMISIONESMESES)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.cargaGrilla()
    
    def cargaGrilla(self):
        self.grid1.CreateGrid(10,6)
        
        columnas2 =['Vendedora',' Monto Vendido   ','En Pesos   ','Tarjetas/otros ','CtaCte  ','Comision ']
        for i, col in enumerate(columnas2): 
            self.grid1.SetColLabelValue(i, col)
            
        self.grid1.AutoSizeRow(0,True)
        self.grid1.AutoSizeColumn(0,True)
        self.grid1.AutoSizeColumn(1,True)
        self.grid1.AutoSizeColumn(2,True)
        self.grid1.AutoSizeColumn(3,True)
    
    
    def OnMesesCombobox(self, event):
        
        self.limpiaGrilla()
        mes = self.meses.GetValue()
        if mes=="Enero":
            mes="01"
        if mes=="Febrero":
            mes="02"
        if mes=="Marzo":
            mes="03"
        if mes=="Abril":
            mes="04"
        if mes=="Mayo":
            mes="05"
        if mes=="Junio":
            mes="06"
        if mes=="Julio":
            mes="07"
        if mes=="Agosto":
            mes="08"
        if mes=="Setiembre":
            mes="09"
        if mes=="Octubre":
            mes="10"
        if mes=="Noviembre":
            mes="11"
        if mes=="Diciembre":
            mes="12"
        
        
        self.inmes.ChangeValue(str(mes))
        
        fechaInicio= '2009-%s-01' % mes 
        fechaFinal= '2009-%s-31' % mes 
        SQL="SELECT b.nombre AS 'Nombre', SUM( totalfactura ) AS 'Total', (SELECT sum( monto )FROM ventastienepagos c WHERE idformapagos = 'P' and c.vendedora = b.idvendedora and c.vendedora=a.usuario AND (fecha>='%s' AND fecha<='%s')) AS Pesos,(SELECT sum( monto) FROM ventastienepagos c WHERE idformapagos <>'P' and c.vendedora = b.idvendedora and c.vendedora=a.usuario AND (fecha>='%s' AND fecha<='%s')) AS Tarjetas FROM ventas a, vendedoras b WHERE a.usuario = b.idvendedora AND (a.fecha>='%s' AND a.fecha<='%s') AND idformaticket!=999 GROUP BY Nombre ORDER BY Total DESC"    %(fechaInicio,fechaFinal, fechaInicio,fechaFinal,fechaInicio,fechaFinal)  
        resultados = consultasBD.ordenCrudaDict(SQL)
        i =0 
        for r in resultados:
            total = float("0.0")
            pesos = float("0.0")
            tarjetas = float("0.0")
            ctacte = float("0.0")
            print r["Total"]
            print r["Pesos"]
            print r["Tarjetas"]
            if r["Nombre"] != None:
                self.grid1.SetCellValue(i, 0, str(r["Nombre"]))
            
            if r["Total"] != None:
                total = round(r["Total"],2)
                self.grid1.SetCellValue(i, 1, str(round(r["Total"],2)))
                
            if r["Pesos"] != None :
                pesos = round(r["Pesos"],2)
                self.grid1.SetCellValue(i, 2, str(round(r["Pesos"],2))) 
            
            if r["Tarjetas"] != None :
                tarjetas = round(r["Tarjetas"],2)
                self.grid1.SetCellValue(i, 3, str(round(r["Tarjetas"],2))) 
            
            
            if r["Total"] != None  :
                comision = (1 * round(r["Total"],2)) / 100
                ctacte = total - pesos - tarjetas
                self.grid1.SetCellValue(i, 4, str(round(ctacte,2))) 
                self.grid1.SetCellValue(i, 5, str(round(comision,2)))
            
            i = i + 1
        
        
        #self.grid1.SetCellValue(i, 4,   ) #
        total1 = float("0.0")
        total2 = float("0.0")
        total3 = float("0.0")
        total = float("0.0")
        for r in xrange(i):
            if self.grid1.GetCellValue(r,1) != "":
                total1 = total1 + float(self.grid1.GetCellValue(r,1))
            if self.grid1.GetCellValue(r,2) != "":
                total2 = total2 + float(self.grid1.GetCellValue(r,2))
            if self.grid1.GetCellValue(r,3) != "":
                total3 = total3 + float(self.grid1.GetCellValue(r,3))
            if self.grid1.GetCellValue(r,4) != "":
                total = total + float(self.grid1.GetCellValue(r,4))
        
        
        self.grid1.SetCellValue(i ,0,"TOTALES ---->")
        self.grid1.SetCellValue(i ,1,str(total1))
        self.grid1.SetCellValue(i ,2,str(total2))
        self.grid1.SetCellValue(i ,3,str(total3))
        self.grid1.SetCellValue(i ,4,str(total))
        
        
    def limpiaGrilla(self):
            for x in xrange(10):
                for y in xrange(6):
                    self.grid1.SetCellValue(x,y, "")
